package com.demo.java.OD551_600.OD581;

import java.util.Scanner;
import java.util.HashMap;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【翻牌求最大分(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146567366
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();  // 读取输入的整数序列
        String[] tmp2 = input_str.split(",");  // 将输入字符串按逗号分割
        int[] nums = new int[tmp2.length];

        // 将分割后的字符串转为整数数组
        for (int i = 0; i < tmp2.length; i++) {
            nums[i] = Integer.parseInt(tmp2[i]);
        }

        HashMap<Integer, Integer> vals = new HashMap<>();

        // 初始化第一个点的得分
        int target0 = Math.max(0, nums[0]);
        vals.put(0, target0);

        // 初始化前3个位置的得分
        int target1 = 0;
        for (int i = 1; i < 4; i++) {
            if (target0 + nums[i] > 0) {
                target1 = target0 + nums[i];  // 如果符合得分规则，则加入当前得分
            }
            vals.put(i, target1);
            target0 = target1;  // 更新前一个得分
        }

        // 从第4个位置开始，根据规则更新得分
        for (int i = 4; i < nums.length; i++) {
            // 如果当前得分加上前一个得分小于之前的得分，则使用之前的得分
            if (vals.get(i - 3) > vals.get(i - 1) + nums[i]) {
                vals.put(i, vals.get(i - 3));  // 不翻转得分，继续沿用前3次得分
            } else {
                vals.put(i, vals.get(i - 1) + nums[i]);  // 否则翻转得分
            }
        }

        // 输出最大得分
        System.out.println(vals.get(nums.length - 1));
    }
}